Industrial robots perform a variety of tasks involving the movement and manipulation of physical objects. A typical industrial robot may, for example, have one or more arms (or, more generally, appendages), equipped with grippers or other end-effectors, that allow the robot to pick up objects at a particular location, transport them to a destination location, and put them down in accordance with particular coordinates. Controllers for existing industrial robots are typically programmed in languages that specify exact positions and trajectories for the robot arm(s). During execution of a programmed task, the robot arm moves a reference coordinate associated with its most distal link to an exactly specified new position, following an exactly specified trajectory. Recent programming systems for industrial robots have input layers that allow a user to teach the robot locations and trajectories by simply grabbing the robot's end-effector and guiding it to the relevant location within the robot's workspace. This method is intuitive to the user, and because the robot can sense its own state (joint angles, forces etc.), it allows complex tasks or motions to be easily demonstrated, sensed, and recorded.
To facilitate hand-guiding of a robot arm, typically, one of two general approaches is employed: In the first approach, the robot is configured to “admit” user-directed motion by sensing forces or torques at the endpoint of the arm and controlling the robot's motions to minimize these forces. For this purpose, “admittance devices” require highly accurate force-sensing capabilities, which may be provided, e.g., by force/torque load cells mounted to the end-effectors, as well as an accurate dynamic model and control scheme for the robot platform. Load cells are fragile, however, making them impractical for robots that experience heavy usage. Furthermore, for mass-produced robots, both the load cells and the hardware required to implement an accurate dynamic model and control scheme are expensive—often prohibitively so.
In the second approach, the robot is designed to only minimally “impede” the motion desired by the user. Low mechanical impedance can, in principle, be achieved by reducing the mass and inertia of the robot's moving components, but this is impractical for robots intended to carry significant loads, which are preferably themselves large and heavy. Alternatively, low-impedance devices may actively apply forces and torques to the joints so as to allow the user to freely control the position of the arm. For example, the robot may be operated in a mode in which the forces applied internally at the joints accurately compensate for the gravitational forces due to the masses of the links constituting the robot's arm. If, at each joint, the internally applied torque balances against the weight of the downstream links, then the arm will float and be easy to move—to the user, it will feel as if the arm were in reduced or zero gravity. Any slight errors in the compensation will generally cause the arm to float or drift in space, but if a human is holding the arm, this drift can be easily overcome.
For robot arms with six or fewer degrees of motion, the position and orientation of the most distal link (which can be represented as a six-dimensional vector specifying, e.g., the spatial coordinates x, y, and z, as well as—in Euler notation—the roll, pitch, and yaw of the distal link) uniquely determine the settings for all the joints of the robot. If the robot arm has more than six degrees of freedom, however, many different configurations of the links and joints result in the same endpoint, and further specification of the desired pose of the arm is required to remove any ambiguity. Such “redundancy,” as it is commonly called, is often desirable as it provides greater dexterity for the robot. For a redundant robot (i.e., a robot with more degrees of freedom than are uniquely specifiable via the position and orientation of the endpoint), the preferred posture may be chosen based on the task so as to, e.g., avoid obstacles, reduce joint torques, minimize movements, etc. Robots that do not have redundant degrees of freedom, by contrast, do not provide flexibility to take such additional criteria into consideration, once the endpoint is specified. The term “posture” is herein used to connote a position and orientation of the arm or other manipulator, or a plurality of elements thereof. The posture may be specified in any convenient reference frame; for example, posture may be specified by a set of values for coordinates corresponding to degrees of freedom of the manipulator that collectively specify spatial positions and orientations of at least some elements thereof, or by a set of values for coordinates corresponding directly to three-dimensional spatial positions and orientations (e.g., relative to the robot or relative to the room in which the robot operates).
On the downside, redundancy implies that the user cannot completely control the posture of the arm (at least not with one hand) because the position of the endpoint does not fully constrain the motion of the other parts. For example, for a robot arm with similar kinematics to a human arm, it is not possible to force motion of the elbow by moving the end-effector (or “hand” of the robot). While the user can force the robot arm's posture using both of her hands (e.g., by moving the hand and elbow simultaneously), it is, generally, preferable for the user to be able to guide the arm with a single hand to free up her other hand for, e.g., pressing a button, working a separate interface, etc. For low-impedance redundant manipulators, a further (perhaps more important) problem is that any errors in the forces and/or torques applied at the joints will cause the redundant parts of the arm to drift uncontrollably, which is both impractical and potentially dangerous (e.g., if it results in collisions of the arm with other parts of the robot or with people and objects in the robot's environment).
Accordingly, to be effective as a solution to hand-guiding a redundant robot manipulator from the end-effector, the manipulator needs to be easy to move, constrained in a manner that eliminates or at least reduces uncontrollable drifts, and preferably reconfigurable in its posture when needed.